using System;
using System.Net;

namespace SmartBoard.Core.Networking
{
    public interface ISocketConnectionInfo
    {
        /// <summary>
        /// Connection user data.
        /// </summary>
        object UserData
        {
            get;
            set;
        }

        /// <summary>
        /// Connection Session Id.
        /// </summary>
        long ConnectionId
        {
            get;
        }

        /// <summary>
        /// Connection Creator object.
        /// </summary>
        IBaseSocketConnectionCreator Creator
        {
            get;
        }

        /// <summary>
        /// Connection Host object.
        /// </summary>
        IBaseSocketConnectionHost Host
        {
            get;
        }

        /// <summary>
        /// Handle of the OS Socket.
        /// </summary>
        IntPtr SocketHandle
        {
            get;
        }

        /// <summary>
        /// Local socket endpoint.
        /// </summary>
        IPEndPoint LocalEndPoint
        {
            get;
        }

        /// <summary>
        /// Remote socket endpoint.
        /// </summary>
        IPEndPoint RemoteEndPoint
        {
            get;
        }

        DateTime LastAction
        {
            get;
        }

        long ReadBytes
        {
            get;
        }

        long WriteBytes
        {
            get;
        }
        
    }
}